package stockscreener.persistencia;

import java.util.Date;
import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import stockscreener.negocio.BalancoPatrimonial;
import stockscreener.negocio.DemonstracaoDoResultadoDoExercicio;
import stockscreener.negocio.Empresa;
import stockscreener.util.StockScreenerApplicationContext;
import stockscreener.util.UtilData;

public class DemonstracaoDoResultadoDoExercicioDAO extends HibernateDaoSupport {

	public void salva(DemonstracaoDoResultadoDoExercicio dre) {

		HibernateTemplate ht = getHibernateTemplate();
		ht.saveOrUpdate(dre);
	}

	public void salva(List<DemonstracaoDoResultadoDoExercicio> listaDREs) {

		HibernateTemplate ht = getHibernateTemplate();

		for (DemonstracaoDoResultadoDoExercicio dre : listaDREs) {
			ht.save(dre);
		}
	}
	
	public List<DemonstracaoDoResultadoDoExercicio> obterPorEmpresaEmOrdemDecrescenteDeData(Empresa empresa) {
		HibernateTemplate ht = getHibernateTemplate();
		return ht.find("From DemonstracaoDoResultadoDoExercicio as dre where dre.empresa = " + empresa.getId() + " order by dre.dataFinal desc");
	}

	public List<DemonstracaoDoResultadoDoExercicio> obtemPorDataEEmpresa(Date data, Empresa empresa) {
		HibernateTemplate ht = getHibernateTemplate();
		return ht.find("From DemonstracaoDoResultadoDoExercicio as dre where dre.dataFinal = '" + UtilData.formatarData(data, "yyyy-MM-dd") + "' and dre.empresa = " + empresa.getId());
	}
	
	public List<DemonstracaoDoResultadoDoExercicio> obtemTodos() {
		HibernateTemplate ht = getHibernateTemplate();
		return ht.find("From DemonstracaoDoResultadoDoExercicio");
	}
	
	public static DemonstracaoDoResultadoDoExercicioDAO get() {
		return (DemonstracaoDoResultadoDoExercicioDAO) StockScreenerApplicationContext
				.getBean(DemonstracaoDoResultadoDoExercicioDAO.class);
	}
}
